using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;
using Common;
using SystemFrameworks;
using DataAccess;

namespace BusinessRules
{
	/// <summary>
	/// Clase de acceso a datos para la entidad Demoras
	/// </summary>
	public class Encuesta : SINIC
	{
		#region Private Data Access Atributes

		private const String ARE_ID_PARAM = "@ARE_ID";
		private const String SEC_ID_PARAM = "@SEC_ID";
		private const String ENC_ID_PARAM = "@ENC_ID";
		private const String AES_ID_PARAM = "@AES_ID";
		private const String ENC_TITULO_PARAM = "@ENC_TITULO";
		private const String ENC_ESTADO_PARAM = "@ENC_ESTADO";
		private const String ENC_FECHA_INICIAL_PARAM = "@ENC_FECHA_INICIAL";
		private const String ENC_FECHA_FINAL_PARAM = "@ENC_FECHA_FINAL";
		//private const String ENC_FECHA_HISTORICO_PARAM = "@ENC_FECHA_HISTORICO";
		private const String ENC_HOME_PARAM = "@ENC_HOME";
		private const String ENC_PRESENTA_PUBLICO_PARAM = "@ENC_PRESENTA_PUBLICO";
		private const String ENC_ESTADO_MODULO_PARAM = "@ENC_ESTADO_MODULO";
		private const String STR_ID_PARAM = "@STR_ID";

       


		#endregion Private Data Access Atributes


        private string _CadenaConexion;

        public string CadenaConexion
        {
            get { return _CadenaConexion; }
            set { _CadenaConexion = value; }
        }

		/// <summary>
		/// Constructor de la clase Mod_encuestas
		/// </summary>
        public Encuesta(string strCadenaConecxion)
		{
            CadenaConexion = strCadenaConecxion;
		}

 
		public EncuestaData ConsultarEncuesta(string Id)
		{
			EncuestaData response = new EncuestaData();
			SqlParameter param1 = new SqlParameter(ENC_ID_PARAM, Id);
			SqlParameter[] parameters = {param1};
			SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_MOD_ENCUESTAS", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}

		public EncuestaData ConsultarEncuestaAreaSeccion(string IdArea, string IdSeccion)
		{
			EncuestaData response = new EncuestaData();
			SqlParameter param1 = new SqlParameter(ARE_ID_PARAM, IdArea);
			SqlParameter param2 = new SqlParameter(SEC_ID_PARAM, IdSeccion);
			SqlParameter[] parameters = {param1, param2};
			SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_MOD_ENCUESTAS_SERVICIOS_ARE_ID_SEC_ID", response , parameters);
 
			return response;
		}
 

		public EncuestaData ConsultarEncuestaHome(string IdSec)
		{
			EncuestaData response = new EncuestaData();
			SqlParameter param1 = new SqlParameter(SEC_ID_PARAM, IdSec);
			SqlParameter[] parameters = {param1};
			SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_MOD_ENCUESTA_HOME", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}
		/// <summary>
		/// consulta las encuestas de un area y seccion 
		/// </summary>
		/// <param name="IdAre">id del area a consultar</param>
		/// <param name="IdSec">id de seccion a consultar</param>
		/// <returns>objeto EncuestaData</returns>
		public EncuestaData ConsultarEncuestasSeccion(string IdAre, string IdSec)
		{
			EncuestaData response = new EncuestaData();
			SqlParameter param1 = new SqlParameter(ARE_ID_PARAM, IdAre);
			SqlParameter param2 = new SqlParameter(SEC_ID_PARAM, IdSec);
			SqlParameter[] parameters = {param1, param2};
			SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_MOD_ENCUESTAS_SERVICIOS_ARE_ID_SEC_ID", response, parameters);
			if (response.Rows.Count == 0)
			{
				return null;
			}
			return response;
		}
		/// <summary>
		/// consulta las encuestas q no estan asociadas a un area y seccion
		/// </summary>
		/// <param name="IdAre"></param>
		/// <param name="IdSec"></param>
		/// <returns></returns>
		public EncuestaData ConsultarEncuestaNoAreaSeccion(string IdAre, string IdSec)
		{
			EncuestaData response = new EncuestaData();
			SqlParameter param1 = new SqlParameter(ARE_ID_PARAM, IdAre);
			SqlParameter param2 = new SqlParameter(SEC_ID_PARAM, IdSec);
			SqlParameter[] parameters = {param1, param2};
			SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_MOD_ENCUESTAS_SERVICIOS_NO_ARE_ID_SEC_ID", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}

		public EncuestaData ConsultarEncuestasSeccionHistorico(string IdAre, string IdSec)
		{
			EncuestaData response = new EncuestaData();
			SqlParameter param1 = new SqlParameter(ARE_ID_PARAM, IdAre);
			SqlParameter param2 = new SqlParameter(SEC_ID_PARAM, IdSec);
			SqlParameter[] parameters = {param1, param2};
			SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_MOD_ENCUESTAS_SECCION_HISTORICAS", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}

		public decimal AdicionarEncuestas(EncuestaData datos, EncuestaPreguntaData datosPreguntas )
		{
			decimal intEnc_Id = 0;
			DataTable tabla = datos; 
 
			StartTransaction();

            EncuestaPregunta encuestaPregunta = new EncuestaPregunta(CadenaConexion);
			try
			{
				foreach (DataRow row in tabla.Rows)
				{
					SqlParameter param1 = new SqlParameter(ENC_ID_PARAM, SqlDbType.Decimal);
					param1.Direction = ParameterDirection.Output;
					SqlParameter param2 = new SqlParameter(ARE_ID_PARAM, row[EncuestaData.ARE_ID_FIELD]);
					SqlParameter param3 = new SqlParameter(SEC_ID_PARAM, row[EncuestaData.SEC_ID_FIELD]);
					SqlParameter param4 = new SqlParameter(ENC_TITULO_PARAM, row[EncuestaData.ENC_TITULO_FIELD]);
					SqlParameter param5 = new SqlParameter(ENC_ESTADO_PARAM, row[EncuestaData.ENC_ESTADO_FIELD]);
					SqlParameter param6 = new SqlParameter(ENC_FECHA_INICIAL_PARAM, row[EncuestaData.ENC_FECHA_INICIAL_FIELD]);
					SqlParameter param7 = new SqlParameter(ENC_FECHA_FINAL_PARAM, row[EncuestaData.ENC_FECHA_FINAL_FIELD]);
					
					SqlParameter param9 = new SqlParameter(ENC_HOME_PARAM, row[EncuestaData.ENC_HOME_FIELD]);
					SqlParameter param10 = new SqlParameter(ENC_PRESENTA_PUBLICO_PARAM, row[EncuestaData.ENC_PRESENTA_PUBLICO_FIELD]);
					SqlParameter param11 = new SqlParameter(ENC_ESTADO_MODULO_PARAM, row[EncuestaData.ENC_ESTADO_MODULO_FIELD]);
					SqlParameter[] parameters = {param1, param2, param3, param4, param5, param6, param7, param9, param10, param11};
					SqlHelper.ExecuteNonQuery(CadenaConexion , CommandType.StoredProcedure, "PAS_ADICIONAR_MOD_ENCUESTAS", parameters);
					intEnc_Id = decimal.Parse(param1.Value.ToString());
					 
					row[EncuestaData.ENC_ID_FIELD] = intEnc_Id;
					 
					foreach( DataRow drow in datosPreguntas.Rows)
					{
						drow[EncuestaPreguntaData.ENC_ID_FIELD] = intEnc_Id;
					}
					encuestaPregunta.AdicionarEncuestasPreguntas(datosPreguntas );  
				}
				#region se adiciona en tabla lleva la relacion de encuesta con servicios
				AdicionarEncuestaServicio( (EncuestaData) tabla ) ;
				#endregion

				#region 3. Registrar Auditoria
				if ( this.RegistroAuditoria!= null )
				{	
					RegistroAuditoria.Rows[0][RegistroAuditoriaData.REG_IDENTIFICADOR_FIELD] = intEnc_Id;					
					try
					{
						RegistrarAuditoria();
					}
					catch (Exception ex)
					{
						AbortTransaction();
						throw new ApplicationExceptionManager(ex.Message, ex);
					}
				}

				#endregion				
				CompleteTransaction();
 
			}
			catch (SqlException sqlEx)
			{
				AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "Entidades"), sqlEx);
			}
			catch (Exception ex)
			{
				AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "Entidades"), ex);
			}
 
			return (intEnc_Id);
		}

		public bool ActualizarEncuestas(EncuestaData datos, EncuestaPreguntaData datosPreguntas )
		{
			bool resultado =false;
			DataTable tabla = datos; 
			EncuestaPreguntaData datosPreguntasAntes = new EncuestaPreguntaData();
			EncuestaPreguntaData datosPreguntasDespues = new EncuestaPreguntaData();
			StartTransaction();

            EncuestaPregunta encuestaPregunta = new EncuestaPregunta(CadenaConexion);
			try
			{
				foreach (DataRow row in tabla.Rows)
				{	
					EncuestaData encuestaDataAntes = null;
					if (this.RegistroAuditoria != null)
					{
						encuestaDataAntes = ConsultarEncuesta(row[EncuestaData.ENC_ID_FIELD].ToString());
					}

					SqlParameter param1 = new SqlParameter(ENC_ID_PARAM, row[EncuestaData.ENC_ID_FIELD]);
					SqlParameter param2 = new SqlParameter(ENC_TITULO_PARAM, row[EncuestaData.ENC_TITULO_FIELD]);
					SqlParameter param3 = new SqlParameter(ENC_ESTADO_PARAM, row[EncuestaData.ENC_ESTADO_FIELD]);
					SqlParameter param4 = new SqlParameter(ENC_FECHA_INICIAL_PARAM, row[EncuestaData.ENC_FECHA_INICIAL_FIELD]);
					SqlParameter param5 = new SqlParameter(ENC_FECHA_FINAL_PARAM, row[EncuestaData.ENC_FECHA_FINAL_FIELD]);
					 
					SqlParameter param7 = new SqlParameter(ENC_HOME_PARAM, row[EncuestaData.ENC_HOME_FIELD]);
					SqlParameter param8 = new SqlParameter(ENC_PRESENTA_PUBLICO_PARAM, row[EncuestaData.ENC_PRESENTA_PUBLICO_FIELD]);
					SqlParameter param9 = new SqlParameter(ENC_ESTADO_MODULO_PARAM, row[EncuestaData.ENC_ESTADO_MODULO_FIELD]);
					SqlParameter[] parameters = {param1, param2, param3, param4, param5,  param7, param8, param9};
					SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure, "PAS_ACTUALIZAR_MOD_ENCUESTAS", parameters);

					if ( datosPreguntas != null)
					{
						datosPreguntasAntes = encuestaPregunta.ConsultarEncuestasPreguntas(row[EncuestaData.ENC_ID_FIELD].ToString());
						encuestaPregunta.EjecutarCambios(datosPreguntas);
						datosPreguntasDespues = encuestaPregunta.ConsultarEncuestasPreguntas(row[EncuestaData.ENC_ID_FIELD].ToString());
					}   

					#region 2. Registra Auditoria
					if ( this.RegistroAuditoria != null )
					{
						try
						{
							RegistrarAuditoria(encuestaDataAntes, tabla );
							
							if (datosPreguntas!=null)
							{
								RegistrarAuditoriaRelacionadas(datosPreguntasAntes, datosPreguntasDespues );
							}
						}
						catch (Exception ex)
						{
							AbortTransaction();
							throw new ApplicationExceptionManager(ex.Message,ex);				
						}	
					}
					#endregion
				}
				resultado = true;
				CompleteTransaction();
			}
			catch (SqlException sqlEx)
			{
				AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "Entidades"), sqlEx);
			}
			catch (Exception ex)
			{
				AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "Entidades"), ex);
			}
			return resultado;
		}

		public void EliminarEncuestasRespuestas(string Id  )
		{
			try
			{
				SqlParameter param1 = new SqlParameter(ENC_ID_PARAM, Id);
				SqlParameter[] parameters = {param1};
				SqlHelper.ExecuteNonQuery( CadenaConexion , CommandType.StoredProcedure, "PAS_ELIMINAR_MOD_RESPUESTAS", parameters);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "RespuestasEncuestas"), ex);
			}
		}
		/// <summary>
		/// Elimina un registro de la entidad y de encuesta respuesta y de encuesta pregunta
		/// </summary>
		/// <param name="Id">Identificador del registro</param>
		public void Eliminarncuestas(string Id)
		{

            EncuestaPregunta encuestaPregunta = new EncuestaPregunta(CadenaConexion);
			StartTransaction();
			try
			{
				SqlParameter param1 = new SqlParameter(ENC_ID_PARAM, Id);
				SqlParameter[] parameters = {param1};

				#region se elimina en tabla lleva la relacion de encuesta con servicios
				EliminarEncuestaServicio( Id  ) ;
				#endregion
				EliminarEncuestasRespuestas(Id );  
				encuestaPregunta.EliminarEncuestasPreguntasIDENC(Id ) ;  
				SqlHelper.ExecuteNonQuery(CadenaConexion , CommandType.StoredProcedure, "PAS_ELIMINAR_MOD_ENCUESTAS", parameters);
				#region 2. Registra Auditoria
				try
				{
					RegistrarAuditoria();
				}
				catch (Exception ex)
				{
					AbortTransaction();
					throw new ApplicationExceptionManager(ex.Message,ex);				
				}
				#endregion

				CompleteTransaction();
			}
			catch (SqlException sqlEx)
			{
				AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "Entidades"), sqlEx);
			}
			catch (Exception ex)
			{
				AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "Entidades"), ex);
			}
 
		}
//
//		public void Eliminarncuestas(ArrayList arrIDs)
//		{
//			SqlConnection objConnection = new SqlConnection(ConnectionString);
//			objConnection.Open();
//			SqlTransaction objTrans = objConnection.BeginTransaction();
//
//			try
//			{
//				foreach (object Item in arrIDs)
//				{
//					SqlParameter param1 = new SqlParameter(ENC_ID_PARAM, decimal.Parse(Item.ToString()));
//					SqlParameter[] parameters = {param1};
//					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_MOD_ENCUESTAS", parameters);
//				}
//				objTrans.Commit();
//			}
//			catch (SqlException sqlEx)
//			{
//				objTrans.Rollback();
//				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "Encuestas"), sqlEx);
//			}
//			catch (Exception ex)
//			{
//				objTrans.Rollback();
//				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "Encuestas"), ex);
//			}
//			finally
//			{
//				objConnection.Close();
//			}
//		}
//
		public void CambiarEstado(string strIds, Utilidad.EstadosAprobacion estado)
		{
			StartTransaction();
			EncuestaData encuestaData = new EncuestaData();
			DataRow drdespues = encuestaData.NewRow();
			drdespues[EncuestaData.ENC_ID_FIELD] = strIds;
			drdespues[EncuestaData.ENC_ESTADO_FIELD] = EnumHelper.GetDescription(estado);
			encuestaData.addEncuestas(drdespues);

			try
			{
				SqlParameter param1 = new SqlParameter(STR_ID_PARAM, strIds);
				SqlParameter param2 = new SqlParameter(ENC_ESTADO_PARAM, EnumHelper.GetDescription(estado));
				SqlParameter[] parameters = {param1, param2};
				SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure, "PAS_CAMBIAR_ESTADO_MOD_ENCUESTAS", parameters);

				#region 3. Registrar Auditoria
				if ( this.RegistroAuditoria != null )
				{
					try
					{						 
						RegistrarAuditoria();
					}
					catch (Exception ex)
					{
						AbortTransaction();
						throw new ApplicationExceptionManager(ex.Message, ex);
					}
				}
				#endregion

				CompleteTransaction();
			}
			catch (SqlException sqlEx)
			{
				AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "Entidades"), sqlEx);
			}
			catch (Exception ex)
			{
				AbortTransaction();
				if (estado == Utilidad.EstadosAprobacion.Activo)
				{
					throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgAprobarRegistrosExitoso", "Encuestas"), ex);
				}
				else
				{
					throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgDesaprobarRegistrosExitoso", "Encuestas"), ex);
				}
			}

		}

		#region metodos nuevos

		public bool AdicionarEncuestasAServicio(EncuestaData datos  )
		{
			//mensaje = String.Empty;
			bool response = false;
		
			EncuestaData dataAdicionar = new EncuestaData();
			EncuestaData dataEliminar = new EncuestaData();
			//EncuestaData dataActualizar = new EncuestaData();

			if (datos != null && datos.Rows.Count > 0)
			{
				foreach (DataRow row in datos.Rows)
				{
					switch (row.RowState)
					{
						case DataRowState.Added:
							dataAdicionar.ImportRow(row);
							break;
						case DataRowState.Modified:
							//dataActualizar.ImportRow(row);
							break;
						case DataRowState.Deleted:
							DataRow dataRow = dataEliminar.NewRow();
							dataRow[EncuestaData.ARE_ID_FIELD] = row[EncuestaData.ARE_ID_FIELD, DataRowVersion.Original];
							dataRow[EncuestaData.SEC_ID_FIELD] = row[EncuestaData.SEC_ID_FIELD, DataRowVersion.Original];
							dataRow[EncuestaData.ENC_ID_FIELD] = row[EncuestaData.ENC_ID_FIELD, DataRowVersion.Original];
							
							dataEliminar.addEncuestas(dataRow);
							break;
					}
				}
			}
			
			StartTransaction();
			try
			{
				if (dataAdicionar != null && dataAdicionar.Rows.Count > 0)
				{				
					response = AdicionarEncuestaServicio(dataAdicionar );					 
				}
//				if (dataActualizar != null && dataActualizar.Rows.Count > 0)
//				{				
//				//	response = ActualizarEncuestaPregunta(dataActualizar );
//				}
				if (dataEliminar != null && dataEliminar.Rows.Count > 0)
				{					
					response = EliminarEncuestaServicio(dataEliminar );
				}	
				//response = true;
				CompleteTransaction();
			}
			catch (Exception ex)
			{
				AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgCambiosNoExitoso", GetType().FullName), ex);
			}			
			
			return response;
		}		

		public bool AdicionarEncuestaServicio(EncuestaData datos )  
		{
			decimal decId = 0;
			bool resultado = false;
			DataTable tabla = datos; 

			try
			{
				foreach (DataRow row in tabla.Rows)
				{					 
					SqlParameter param = new SqlParameter(AES_ID_PARAM, SqlDbType.Decimal);
					param.Direction = ParameterDirection.Output;

					SqlParameter param1 = new SqlParameter(ENC_ID_PARAM, row[EncuestaData.ENC_ID_FIELD]);
					SqlParameter param2 = new SqlParameter(ARE_ID_PARAM, row[EncuestaData.ARE_ID_FIELD]);
					SqlParameter param3 = new SqlParameter(SEC_ID_PARAM, row[EncuestaData.SEC_ID_FIELD]);
					SqlParameter[] parameters = {param, param1, param2, param3 };
					SqlHelper.ExecuteNonQuery( CadenaConexion  , CommandType.StoredProcedure, "PAS_ADICIONAR_MOD_ENCUESTAS_SERVICIOS", parameters);
					resultado = true;

					decId = decimal.Parse(param.Value.ToString());

					#region 2. Registra Auditoria					 

					if (this.RegistroAuditoria!=null && this.RegistroAuditoria.Rows.Count>0)
					{
						RegistroAuditoria.Rows[0][RegistroAuditoriaData.REG_IDENTIFICADOR_FIELD] = decId; //int.Parse(obj.ToString());
					}
					try
					{
						RegistrarAuditoria();
					}
					catch (Exception ex)
					{
						AbortTransaction();
						throw new ApplicationExceptionManager(ex.Message,ex);				
					}
					#endregion
				}
				
			}
			catch (SqlException sqlEx)
			{				
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "EncuerstaServicio"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "EncuestaServicio"), ex);
			}
			
			return resultado;
		}

		public bool EliminarEncuestaServicio(EncuestaData datos )  
		{
			bool resultado = false;
			DataTable tabla = datos; 

			try
			{
				foreach (DataRow row in tabla.Rows)
				{					 
					SqlParameter param1 = new SqlParameter(ENC_ID_PARAM, row[EncuestaData.ENC_ID_FIELD]);
					SqlParameter param2 = new SqlParameter(ARE_ID_PARAM, row[EncuestaData.ARE_ID_FIELD]);
					SqlParameter param3 = new SqlParameter(SEC_ID_PARAM, row[EncuestaData.SEC_ID_FIELD]);
					SqlParameter[] parameters = {param1, param2, param3 };
					SqlHelper.ExecuteNonQuery( CadenaConexion  , CommandType.StoredProcedure, "PAS_ELIMINAR_MOD_ENCUESTAS_SERVICIOS", parameters);
					resultado = true;
				}
				
			}
			catch (SqlException sqlEx)
			{				
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "EncuerstaServicio"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "EncuestaServicio"), ex);
			}
			
			return resultado;
		}
		public bool EliminarEncuestaServicio(string idEncuesta )  
		{
			bool resultado = false;
			try
			{				 					 
					SqlParameter param1 = new SqlParameter(ENC_ID_PARAM, idEncuesta);
					SqlParameter param2 = new SqlParameter(ARE_ID_PARAM, DBNull.Value);
					SqlParameter param3 = new SqlParameter(SEC_ID_PARAM, DBNull.Value);
					SqlParameter[] parameters = {param1, param2, param3 };
					SqlHelper.ExecuteNonQuery( CadenaConexion  , CommandType.StoredProcedure, "PAS_ELIMINAR_MOD_ENCUESTAS_SERVICIOS", parameters);
					resultado = true;				
			}
			catch (SqlException sqlEx)
			{				
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "EncuestaServicio"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "EncuestaServicio"), ex);
			}
			
			return resultado;
		}
		#endregion
	}
}